undo log、redo log、binlog 有什么用?
4 分钟阅读
•
414 字
+
456 词
参考答案:
-
undo log是Innodb存储引擎层 生成的日志,实现了 事务中的原子性,主要用于事务回滚和MVCC。 -
redo log是Innodb存储引擎层 生成的 物理日志,记录了某个数据页做了什么修改,每当执行一个事务就会产生一条或者多条物理日志 ,并且redo log是 采用顺序写 ,效率更好,写满了后又回到开头进行写,如果在buffer pool中修改数据直接写回磁盘的话,是一个随机写,效率就不高了,并且还引入了 redo log buffer(实现组提交),具体就是先写入这个buffer中,然后再通过刷盘 ( 0:每隔一秒写入,1:提交时就刷盘,2:写入系统缓存pagecache (这个pagecache和mysql不是同一个进程),由操作系统调度fsync),redo log主要是恢复事务数据的( 崩溃恢复 ), 保证持久性 的。 -
binlog(归档日志)是整个mysql的**Server层 生成的 逻辑日志**,记录所有日志,主要用于**数据备份和主从复制。**binlog也可以设置参数实现刷盘( 0:每次提交事务只write,每隔一秒刷盘,1:提交时写入刷盘,N:写入系统缓存pagecache,积累N次事务再刷盘)。